package com.javabase;

/**
 * @Description: java类作用描述
 * @Author: Bsea
 * @CreateDate: 2019/6/14$ 21:07$
 */
public class ConstroctTest4 {
    public static void main(String[] args){
        Child ch = new Child();
    }
}
class Parent{
    static String name1 = "hello";
    //静态代码块
    static{
        System.out.println("父类静态Parent static block");
    }
    public Parent(){
        System.out.println("父类构造Parent construct block");
    }
}
class Child extends Parent{
    static String name2 = "hello";
    static{
        System.out.println("子类静态Child static block");
    }
    public Child(){
        System.out.println("字类构造Child construct block");
    }
}
/**
 结果分析：

 1. 明先初始化父类的静态属性在执行自己的静态属性，再是父类的构造方法再是自己的构造方法。

 2. 实例化 Child 类。第一要初始化类Child ，因为Child拥有父类（会判断父类是否初始化），类的初始化只有一次。。初始化类（就是按照顺序加载静态变量与静态方法）。

 3. 初始化Child后。开始实例化Child ，因为拥有父类，所以调用构造方法之前会调用父类的默认构造方法。

 **/